11610. Стоимость букв

 

Задан текст. Только заглавные латинские буквы от A до Z имеют стоимость. Стоимость A равна 1, стоимость B равна 2 и так далее. Стоимость Z равна 26. Найдите произведение всех стоимостей букв в тексте.

 

Вход. Текст состоит из нескольких строк и содержит любые символы.

 

Выход. Выведите произведение всех стоимостей букв в тексте по модулю 109 + 7.

 

Пример входа

Пример выхода

Eolymp chapter VI

    plus ,.,.

$%4  $56 $^ USAco 456$%^$

4%^$^

395010

 

РЕШЕНИЕ

строки

 

Анализ алгоритма

Обрабатываем последовательно буквы текста. Если текущая буква – заглавная латинская, то находим ее стоимость. Вычисляем произведение всех стоимостей букв в тексте по модулю 109 + 7.

 

Пример

В заданном примере имеются следующие заглавные латинские буквы: E (5), V (22), I (9), U (21), S (19), A (1). Стоимость букв указана в скобках. Произведение всех стоимостей равно (5 22 9 21 19 1) mod 1000000007 = 395010.

 

Реализация алгоритма

Определим модуль, по которому будем вычислять произведение.

 

#define MOD 1000000007

 

Искомое произведение будем вычислять в переменной res.

 

res = 1;

 

Читаем текст строка за строкой.

 

while (getline(cin, s))

{

 

Обрабатываем текущую строку s.

 

  for (i = 0; i < s.size(); i++)

  {

 

Если текущий символ s[i] является заглавной латинской буквой, то вычисляем его стоимость c. Умножаем res на c.

 

    if (('A' <= s[i]) && (s[i] <= 'Z'))

    {

      c = s[i] - 'A' + 1;

      res = (res * c) % MOD;

    }

  }

}

 

Выводим ответ.

 

cout << res << endl;